#!/usr/bin/env python
# coding: utf-8

# * 本学习记录人：许智超
# * 学习时间：2021-12-21
# * week17
# * 参考的文档：
# 
# > 1.[python官方文档](https://python.org/doc)
# 
# > 2.[许老师博客](https://cnblogs.com/xuzhichao)
# 
# > 3.[bootstrap框架](https://getbootstrap.com/)
# 
# # 尝试完成期末项目

# In[2]:





# In[11]:


from flask import Flask, request
from flask import render_template
import argparse

# flask角色： 中央登记中心
# 1. 路由 route：
# 1.1  url 相对路径：不完整的路径（相对于IP地址的路径，所以IP地址和端口号不需要写）；
#    绝对路径是完整路径。
# 1.2  request 的请求方法：【GET默认】【POST】
# 2  视图函数

app = Flask(__name__)


# 【GET默认】
@app.route("/")
def hello_world():
    return render_template('hello.html')


# 【GET默认】
@app.route("/index")
def index():
    return render_template('index.html')


# 【GET默认】
@app.route("/index_vowels")
def index_vowels():
    return render_template('index_vowels.html')


# 【POST】:用户提交的数据用POST方法---名字全称
@app.route("/result", methods=['POST'])
def result():
    # 我们怎么接受数据？ flask提供了request.form的方法用来
    # 接收用户数据
    # 第一个项目：名字的全称
    py_firstname = request.form['firstname']
    py_lastname = request.form['lastname']
    py_fullname = py_firstname.title() + ' ' + py_lastname.title()

    return render_template('result.html',
                           fullname=py_fullname
                           )


# 【POST】:用户提交的数据用POST方法---元音字母
@app.route("/result_vowels", methods=['POST'])
def result_vowels():
    # 我们怎么接受数据？ flask提供了request.form的方法用来
    # 接收用户数据

    # 第二个项目：元音字母表词频统计
    py_word = request.form['word']
    py_vowels = request.form['vowels']
    py_found = {}
    for i in py_word:
        if i in py_vowels:
            py_found.setdefault(i, 0)
            py_found[i] += 1

    return render_template('result_vowels.html',
                           found=py_found)


def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('--device', default='0,1', type=str, help='设置使用哪些显卡')
    parser.add_argument('--no_cuda', action='store_true', help='不适用GPU进行训练')
    args = parser.parse_args(args=['--device', '0', '--no_cuda'])
    args = parser.parse_args()
    return args


if __name__ == '__main__':
    parse_args()
    app.run(host='localhost', port='6000', debug=True, threaded=True)

